package net.osmand.plus;

import net.osmand.plus.activities.OsmandApplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.os.PowerManager.WakeLock;

public class OnNavigationServiceAlarmReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		final WakeLock lock = NavigationService.getLock(context);
		final NavigationService service = ((OsmandApplication) context.getApplicationContext()).getNavigationService();
		// do not do nothing
		if (lock.isHeld() || service == null) {
			return;
		}
		// 
		lock.acquire();
		// request location updates
		final LocationManager locationManager = (LocationManager) service.getSystemService(Context.LOCATION_SERVICE);
		locationManager.requestLocationUpdates(service.getServiceOffProvider(), 1000, 0, service);
		if (service.getServiceOffInterval() > service.getServiceError()) {
			service.getHandler().postDelayed(new Runnable() {
				@Override
				public void run() {
					// if lock is not anymore held
					if (lock.isHeld()) {
						lock.release();
						locationManager.removeUpdates(service);
					}
				}
			}, service.getServiceError());
		}
	}

}
